<?php
/**
 * 物件一覧クラス<br />
 *
 * @package    apamanshop
 * @author     SS永田
 * @copyright  コピーライト(要確認)
 */
class Rstobi_Model_RstobiList extends Rstobi_Model_Base
{
	/**
	 * 物件データ取得
	 * @access	public
	 * @param   array
	 * @param	string (1：物件データ取得、2：物件件数取得)
	 * @param   number
	 * @param   number
	 * @return  array
	 */
	public function getBukenDataForList($params, $getMode, $bukenCountFrom=0 , $bukenCountTo=0)
	{
		$sql = '';
		$db_params = array();

		// フリーワード検索は特別処理
		if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_FREEWORD)
		{
			if($getMode == Apm_Config_Search::GETBUKENTYPE_COUNT)
			{
				// フリーワード検索ログ保存
				$this->saveLogFreewordSearch($params);

				// 検索結果件数取得
				return $this->getFreewordSearchCount($params);
			}

			// 物件データ取得
			return $this->generateFreewordSearch($params, $bukenCountFrom, $bukenCountTo);
		}
		else
		{
			// 物件データ取得用SELECT句
			if($getMode == Apm_Config_Search::GETBUKENTYPE_LIST)
			{
				$sql = $this->getSelectPhraseForBuken($params);
			}
			// 物件件数取得用SELECT句
			else if($getMode == Apm_Config_Search::GETBUKENTYPE_COUNT)
			{
				$sql = $this->getSelectCountForBuken($params);
			}

			//FROM句、WHERE句取得
			$sql .= $this->generateSql($params, $db_params ,$getMode);


			// 情報誌以外は、基本条件、こだわり条件で絞り込む
			if($params['SrhKbn'] <> Apm_Config_Search::SRHKBN_JYOHOSHINO)
			{
				// 基本条件での絞込み
				$sql .= $this->_model_rstobi_common->getKihonWhere($params, $db_params);

				// こだわり条件での絞込み
				$sql .= $this->_model_rstobi_common->getKodawariWhere($params, $db_params);

				// 物件データ取得用
				if($getMode == Apm_Config_Search::GETBUKENTYPE_LIST)
				{
					//$sql .= $this->getWhereEndForBuken();

					// ORDER BY句を取得
					$sql .= $this->_model_rstobi_common->getOrderBy($params, $db_params);
					// 2010/12/24 更新日追加
					//$sql .= " ,RANDOM ";

					// 1ページに表示する物件データのみ、取得
					$sql .= $this->getBetween($db_params, $bukenCountFrom, $bukenCountTo);

					// ランダム表示追加
					//$sql .= $this->_model_rstobi_common->getOrderBy($params, &$db_params);
					//$sql .= " ,T03_ORIGINAL_HEYA_CD01 ,RANDOM ";

				}
				// 物件件数取得用
				else if($getMode == Apm_Config_Search::GETBUKENTYPE_COUNT)
				{
					//$sql .= ' GROUP BY T03_ORIGINAL_HEYA_CD01,T03.T03_KASHIDASHI_KUBUN )';
					$sql .= ' )';
				}
			}
		}

		// SQLを実行し、結果を返却
		return $this->dbGetList($sql, $db_params);
	}


	/**
	 * 検索区分毎のFROM句、WHERE句取得
	 * @access	public
	 * @param   array
	 * @param   array
	 * @return  array
	 */
	public function generateSql($params, &$db_params, $getMode)
	{
		//検索区分の存在確認 存在しなければエラー
		if($this->_model_search_common->checkvalue($params, 'SrhKbn'))
		{
			/*** 検索区分によりFROM句、WHERE句を使い分ける ***/
				 if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_JYUSYO)        { $sql .= $this->generateJyusyoSearchSql($params, $db_params); }   		// 住所検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_ENSENEKI)      { $sql .= $this->generateEnsenekiSearchSql($params, $db_params); }		// 沿線・駅検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_ROSENZU)       { $sql .= $this->generateRosenzuSearchSql($params, $db_params); }		// 路線図検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_CHIZU)         { $sql .= $this->generateChizuSearchSql($params, $db_params); }			// 地図検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_TUKINTUGAKU)   { $sql .= $this->generateTukintugakuSearchSql($params, $db_params); }	// 通勤・通学時間検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_JYOHOSHINO)    { $sql  = $this->generateJyohoshinoSearchSql($params, $db_params); }		// 情報誌No.検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_GAKKONAME)     { $sql .= $this->generateGakkonameSearchSql($params, $db_params); }		// 学校名検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_TENPOBUKKEN)   { $sql .= $this->generateTenpoSearchSql($params, $db_params); }			// 店舗物件検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_KODAWARI)      { $sql .= $this->generateJyusyoSearchSql($params, $db_params); }			// こだわり物件検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_TOKUSYU)       { $sql .= $this->generateJyusyoSearchSql($params, $db_params); }			// 特集物件検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_CAMPAIGN)      { $sql .= $this->generateJyusyoSearchSql($params, $db_params); }			// キャンペーン物件検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_GPS)           { $sql .= $this->generateGpsSearchSql($params, $db_params); }			// GPS検索（携帯専用）
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_JYUKYOKEITAI)  { $sql .= $this->generateJyusyoSearchSql($params, $db_params); }         // 住居形態検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_HP_KEIYAKU)    { $sql .= $this->generateHpKeiyakuSearchSql($params, $db_params); }		// 加盟店HP作成契約
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_FAVORITE)      { $sql .= $this->generateFavoriteSearchSql($params, $db_params); }		// お気に入り物件一覧
			// 社宅物件検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_SYATAKU)
			{
				     if($params['SrhType'] == Apm_Config_Search::SRHTYPE_JYUSYO)   { $sql .= $this->generateJyusyoSrhForSyatakuSql($params, $db_params ,$getMode); } // 住所検索
				else if($params['SrhType'] == Apm_Config_Search::SRHTYPE_ENSENEKI) { $sql .= $this->generateEkiSrhForSyatakuSql($params, $db_params ,$getMode); }    // 沿線・駅検索
				else
				{
			echo 'パラメータが不正です。';
			exit;
				}
			}
			// 家賃相場検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_YACHINSOUBA)
			{
				     if($params['SrhType'] == Apm_Config_Search::SRHTYPE_JYUSYO)   { $sql .= $this->generateJyusyoSearchSql($params, $db_params); }    // 住所検索
				else if($params['SrhType'] == Apm_Config_Search::SRHTYPE_ENSENEKI) { $sql .= $this->generateEnsenekiSearchSql($params, $db_params); }  // 沿線・駅検索
			}
			// 賃料×間取り検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_CHINRYOMADORI)
			{
				     if($params['SrhType'] == Apm_Config_Search::SRHTYPE_JYUSYO)   { $sql .= $this->generateJyusyoSearchSql($params, $db_params); }    // 住所検索
				else if($params['SrhType'] == Apm_Config_Search::SRHTYPE_ENSENEKI) { $sql .= $this->generateEnsenekiSearchSql($params, $db_params); }  // 沿線・駅検索
			}
			// マイページ検索条件登録検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_MYPAGE_ADD)
			{
				     if($params['SrhType'] == Apm_Config_Search::SRHTYPE_JYUSYO)   { $sql .= $this->generateJyusyoSearchSql($params, $db_params); }    // 住所検索
				else if($params['SrhType'] == Apm_Config_Search::SRHTYPE_ENSENEKI) { $sql .= $this->generateEnsenekiSearchSql($params, $db_params); }  // 沿線・駅検索
				else
				{
			echo 'パラメータが不正です。';
			exit;
				}
			}
			// マイページ検索条件変更検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_MYPAGE_UPD)
			{
				     if($params['SrhType'] == Apm_Config_Search::SRHTYPE_JYUSYO)   { $sql .= $this->generateJyusyoSearchSql($params, $db_params); }   // 住所検索
				else if($params['SrhType'] == Apm_Config_Search::SRHTYPE_ENSENEKI) { $sql .= $this->generateEnsenekiSearchSql($params, $db_params); } // 沿線・駅検索
				else
				{
			echo 'パラメータが不正です。';
			exit;
				}
			}
			// 物件リクエスト検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_BUKENREQUEST)
			{
				     if($params['SrhType'] == Apm_Config_Search::SRHTYPE_JYUSYO)   { $sql .= $this->generateJyusyoSearchSql($params, $db_params); }   // 住所検索
				else if($params['SrhType'] == Apm_Config_Search::SRHTYPE_ENSENEKI) { $sql .= $this->generateEnsenekiSearchSql($params, $db_params); } // 沿線・駅検索
				else
				{
			echo 'パラメータが不正です。';
			exit;
				}
			}
			// 社宅物件リクエスト検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_BUKENREQUEST_SYATAKU)
			{
				     if($params['SrhType'] == Apm_Config_Search::SRHTYPE_JYUSYO)   { $sql .= $this->generateJyusyoSrhForSyatakuSql($params, $db_params, $getMode); } // 住所検索
				else if($params['SrhType'] == Apm_Config_Search::SRHTYPE_ENSENEKI) { $sql .= $this->generateEkiSrhForSyatakuSql($params, $db_params, $getMode); }    // 沿線・駅検索
				else
				{
			echo 'パラメータが不正です。';
			exit;
				}
			}
			// 住みたい駅検索
			else if($params['SrhKbn'] == Apm_Config_Search::SRHKBN_SUMITAIEKI)
			{
				if($params['SrhType'] == Apm_Config_Search::SRHTYPE_LIST) { $sql .= $this->generateSumitaiekiSearchSql($params, $db_params); } // 一覧検索
				else
				{
			echo 'パラメータが不正です。';
			exit;
				}
			}
			//エラー処理
			else
			{
			echo 'パラメータが不正です。';
			exit;
			}
		}
		//エラー処理
		else
		{
			echo 'パラメータが不正です。';
			exit;
		}

		return $sql;
	}

    /**
     * SQL作成（住所検索）
     *
	 * @access	private
	 * @param   array
	 * @param	array ※参照渡し
	 * @return  string
     */
    private function generateJyusyoSearchSql($params, &$db_params)
    {
    	// インスタンス生成
    	$this->_model_jyusyosearch = new Rstobi_Model_JyusyoSearch();

		// OEMコードを判定しFROM句とWHERE句を取得
		$oemSql = $this->_model_rstobi_common->getOemFromWhere($params, $db_params);

		// FROM句を取得
		$sql  = $this->_model_jyusyosearch->getFromForJyusyosearch();
		$sql .= $oemSql['from'];
		$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン

		/*** WHERE句を取得 【ここから】***/
		// 住所での絞込み
		$sql .= $this->_model_jyusyosearch->getWhereForJyusyosearch($params, $db_params);
		// OEMでの絞込み
		$sql .= $oemSql['where'];
		/*** WHERE句を取得 【ここまで】***/

    	return $sql;
    }

    /**
     * SQL作成（沿線・駅）
     *
	 * @access	private
	 * @param   array
	 * @param	array ※参照渡し
	 * @return  string
     */
    private function generateEnsenekiSearchSql($params, &$db_params)
    {
    	// インスタンス生成
    	$this->_model_ekisearch = new Rstobi_Model_EnsenekiSearch();

		// OEMコードを判定しFROM句とWHERE句を取得
		$oemSql = $this->_model_rstobi_common->getOemFromWhere($params, $db_params);

		// 駅まで選択されたか、沿線までの選択かにより、
		// FROM句とWHERE句を使い分ける

		// 駅まで選択
		if($this->_model_search_common->checkvalue($params, 'StCd'))
		{
			// FROM句を取得
			$sql .= $this->_model_ekisearch->getFromForEkisearch($params, $db_params);
			$sql .= $oemSql['from'];
			$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン

			// WHERE句を取得
			// 沿線・駅での絞込み
			$sql .= $this->_model_ekisearch->getWhereForEkisearch($params, $db_params);

		}
		// 沿線まで選択
		else if($this->_model_search_common->checkvalue($params, 'RailCd'))
		{
			// FROM句のテーブル追加
			$sql .= $this->_model_ekisearch->getFromForEnsensearch($params, $db_params);
			$sql .= $oemSql['from'];
			$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン

			// WHERE句を取得
			// 沿線での絞込み
			$sql .= $this->_model_ekisearch->getWhereForEnsensearch($params, $db_params);
		}
		// エラー処理
		else
		{
			echo 'パラメータが不正です。';
			exit;
		}
		// OMEでの絞込み
		$sql .= $oemSql['where'];

    	return $sql;
    }

	/* SQL作成（フリーワード検索）
	 *
	 * @access	private
	 * @param   array
	 * @return  array
	*/
	private function generateFreewordSearch($params, $bukenCountFrom, $bukenCountTo)
	{
    	// インスタンス生成
		$this->_model_freewordsearch = new Rstobi_Model_FreewordSearch();

		$bukenData  = $this->_model_freewordsearch->getBukenData($params, $bukenCountFrom, $bukenCountTo);

    	return $bukenData;
    }

	/* 物件数取得（フリーワード検索）
	 *
	 * @access	private
	 * @param   array
	 * @return  string
	*/
	private function getFreewordSearchCount($params)
	{
    	// インスタンス生成
		$this->_model_freewordsearch = new Rstobi_Model_FreewordSearch();

		$bukenCount  = $this->_model_freewordsearch->getBukencount($params);

    	return $bukenCount;
    }

	/* フリーワード検索ログ保存
	 *
	 * @access	private
	 * @param   array
	 * @return
	*/
	private function saveLogFreewordSearch($params)
	{
		// インスタンスの生成
		$this->_model_freewordsearch = new Rstobi_Model_FreewordSearch();

		$db = $this->_model_freewordsearch->getDbConnection();
		//トランザクションStart
		$this->_model_freewordsearch->startTransaction($db);

		try {
			// フリーワードログ
			$this->_model_freewordsearch->insertFreeWordLog($params, $db);
		}catch (Exception $e) {
			//ロールバック
			$this->_model_freewordsearch->rollbackTransaction($db);
			//DBのエラーメッセージをログに書き出す
			__log_debug(__FILE__, __LINE__, __METHOD__, $e->getMessage());
		}

		//トランザクションEnd
		$db->closeConnection();

		return;
    }

	/* SQL作成（情報誌No検索）
	 *
	 * @access	private
	 * @param   array
	 * @param	array ※参照渡し
	 * @return  string
	*/
	private function generateJyohoshinoSearchSql($params, &$db_params)
	{
    	// インスタンス生成
		$this->_model_jyohoshinosearch = new Rstobi_Model_JyohoshinoSearch();

		// SQLを取得
		$sql = $this->_model_jyohoshinosearch->getJyohoshinosearch($params,$db_params);

    	return $sql;
    }

	/* SQL作成（学校名検索）
	 *
	 * @access	private
	 * @param   array
	 * @param	array ※参照渡し
	 * @return  string
	*/
	private function generateGakkonameSearchSql($params, &$db_params)
	{
    	// インスタンス生成
		$this->_model_gakkonamesearch = new Rstobi_Model_GakkonameSearch();

		// OEMコードを判定しFROM句とWHERE句を取得
		$oemSql = $this->_model_rstobi_common->getOemFromWhere($params, $db_params);

		// FROM・Where句を取得
		$sql .= $this->_model_gakkonamesearch->getFromForGakkonamesearch($params,$db_params);
		$sql .= $oemSql['from'];
		$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン

		/*** WHERE句を取得 【ここから】***/
		// 学校名での絞り込み
		$sql .= $this->_model_gakkonamesearch->getWhereForGakkonamesearch($params,$db_params);
		// OEMでの絞込み
		$sql .= $oemSql['where'];
		/*** WHERE句を取得 【ここまで】***/

		return $sql;
	}

	/* SQL作成（社宅物件検索・住所検索）
	 *
	 * @access	private
	 * @param   array
	 * @param	array ※参照渡し
	 * @return  string
	*/
	private function generateJyusyoSrhForSyatakuSql($params, &$db_params, $getMode)
	{
		// インスタンス生成
		$this->_model_jyusyosearch = new Rstobi_Model_JyusyoSearch();
		$this->_model_syatakuserch = new Rstobi_Model_SyatakuSearch();

		// 社宅物件検索用SELECT句を取得
		if($params['RstobiDispType'] <> Apm_Config_Search::LISTTYPE_SHOP &&
		   $getMode == Apm_Config_Search::GETBUKENTYPE_LIST)
		{
			$sql .= $this->_model_syatakuserch->getSelectForSyataku($params);
		}

		// FROM句を取得
		$sql .= $this->_model_jyusyosearch->getFromForJyusyosearch();
		$sql .= $this->_model_syatakuserch->getFromForSyataku();
		$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン

		/*** WHERE句を取得 【ここから】***/
		// 住所での絞込み
		$sql .= $this->_model_jyusyosearch->getWhereForJyusyosearch($params, $db_params);
		// 社宅対象物件での絞込み
		$sql .= $this->_model_syatakuserch->getWhereForSyataku();
		/*** WHERE句を取得 【ここまで】***/

		return $sql;
	}

	/* SQL作成（社宅物件検索・沿線検索）
	 *
	 * @access	private
	 * @param   array
	 * @param	array ※参照渡し
	 * @return  string
	*/
	private function generateEkiSrhForSyatakuSql($params, &$db_params, $getMode)
	{
		// インスタンス生成
		$this->_model_ekisearch = new Rstobi_Model_EnsenekiSearch();
		$this->_model_syatakuserch = new Rstobi_Model_SyatakuSearch();

		// SELECT句を取得
		if($params['RstobiDispType'] <> Apm_Config_Search::LISTTYPE_SHOP &&
		   $getMode == Apm_Config_Search::GETBUKENTYPE_LIST)
		{
			$sql .= $this->_model_syatakuserch->getSelectForSyataku($params);
		}

		// 駅まで選択されたか、沿線までの選択かにより、
		// FROM句とWHERE句を使い分ける

		// 駅まで選択
		if($this->_model_search_common->checkvalue($params, 'StCd'))
		{
			// FROM句を取得
			$sql .= $this->_model_ekisearch->getFromForEkisearch($params, $db_params);
			$sql .= $this->_model_syatakuserch->getFromForSyataku();
			$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン

			// WHERE句を取得
			// 沿線・駅での絞込み
			$sql .= $this->_model_ekisearch->getWhereForEkisearch($params, $db_params);

		}
		// 沿線まで選択
		else if($this->_model_search_common->checkvalue($params, 'RailCd'))
		{
			// FROM句のテーブル追加
			$sql .= $this->_model_ekisearch->getFromForEnsensearch($params, $db_params);
			$sql .= $this->_model_syatakuserch->getFromForSyataku();
			$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン

			// WHERE句を取得
			// 沿線での絞込み
			$sql .= $this->_model_ekisearch->getWhereForEnsensearch($params, $db_params);
		}
		// エラー処理
		else
		{
			echo 'パラメータが不正です。';
			exit;
		}

		// 社宅対象物件での絞込み
		$sql .= $this->_model_syatakuserch->getWhereForSyataku();

    	return $sql;
    }

    /* SQL作成（通勤通学時間検索）
	 *
	 * @access	private
	 * @param   array
	 * @param	array ※参照渡し
	 * @return  string
	*/
	private function generateTukintugakuSearchSql($params, &$db_params)
	{
		// インスタンス生成
		$this->_model_tukintugakusearch = new Rstobi_Model_TsukintsugakujikanSearch();

		// セレクト句追加
		if($params['RstobiDispType'] <> Apm_Config_Search::LISTTYPE_SHOP)
		{
			$sql  = '';
			$sql .= ' ,T94.T94_TARGET_EKI_TIME';
        	$sql .= ' ,T94_ENSEN_CD';
        	$sql .= ' ,T94_EKI_CD';
        	$sql .= ' ,T94_TARGET_EKI_CD';
        	$sql .= ' ,T94_ROSENZU_EKI_CD';
        }

		// FROM・Where句を取得
		$sql .= $this->_model_tukintugakusearch->getFromForTsukintsugakujikansearch($params, $db_params);

		//TODO キャンペーンで絞り込めるようにする
		$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン

		$sql .= $this->_model_tukintugakusearch->getWhereForTsukintsugakujikansearch($params, $db_params);

    	return $sql;

	}

   /* SQL作成（地図検索）
	 *
	 * @access	private
	 * @param   array
	 * @param	array ※参照渡し
	 * @return  string
	*/
	private function generateChizuSearchSql($params, &$db_params)
	{
		// インスタンス生成
		$this->_model_chizu          = new Rstobi_Model_ChizuSearch();

		// 指定取得
		if(Apm_Config_Search::CHIZUSEARCH_SEL == $params["obiType"]){
			$sql = $this->_model_chizu->getFromForChizusearch($params, $db_params);
			$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン
			$sql .= $this->_model_chizu->getWhereForChizusearch($params, $db_params);

		// 全件取得
		}else if(Apm_Config_Search::CHIZUSEARCH_ALL == $params["obiType"]){
			// OEM
			if($this->_model_rstobi_common->isOem($params)){
				$sql = $this->_model_chizu->getFromForChizusearchAllOem($params,$db_params);
				$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン
				$sql .= $this->_model_chizu->getWhereForChizusearchAllOem($params,$db_params);
			}else{
				$sql = $this->_model_chizu->getFromForChizusearchAll($params,$db_params);
				$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン
				$sql .= $this->_model_chizu->getWhereForChizusearchAll($params,$db_params);
			}
		}

		return $sql;
	}

   /* SQL作成（路線図検索）
	 *
	 * @access	private
	 * @param   array
	 * @param	array ※参照渡し
	 * @return  string
	*/
	private function generateRosenzuSearchSql($params, &$db_params)
	{
    	// インスタンス生成
    	$this->_model_rosenzusearch = new Rstobi_Model_RosenzuSearch();

		if($this->_model_search_common->checkvalue($params, 'stcode'))
		{
			// FROM句を取得
			$sql .= $this->_model_rosenzusearch->getFromForRosenzusearch($params, $db_params);
			$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン

			// WHERE句を取得
			// 駅での絞込み
			$sql .= $this->_model_rosenzusearch->getWhereForRosenzusearch($params, $db_params);
		}
		// エラー処理
		else
		{
			echo 'パラメータが不正です。';
			exit;
		}

		return $sql;
	}

   /* SQL作成（住みたい駅検索）
	 *
	 * @access	private
	 * @param   array
	 * @param	array ※参照渡し
	 * @return  string
	*/
	private function generateSumitaiekiSearchSql($params, &$db_params)
	{
		// インスタンス生成
		$this->_model_ekisearch        = new Rstobi_Model_EnsenekiSearch();
		$this->_model_sumitaiekisearch = new Rstobi_Model_SumitaiekiSearch();

		if($this->_model_search_common->checkvalue($params, 'StCd'))
		{
			// FROM句を取得
			$sql .= $this->_model_ekisearch->getFromForEkisearch($params, $db_params);
			$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン

			// WHERE句を取得
			// 駅での絞込み
			$sql .= $this->_model_sumitaiekisearch->getWhereForSumitaiekisearch($params, $db_params);
		}
		// エラー処理
		else
		{
			echo 'パラメータが不正です。';
			exit;
		}

		return $sql;
	}

   /* SQL作成（GPS検索）
	 *
	 * @access	private
	 * @param   array
	 * @param	array ※参照渡し
	 * @return  string
	*/
	private function generateGpsSearchSql($params, &$db_params)
	{
		// インスタンス生成
		$this->_model_gpssearch = new Rstobi_Model_GpsSearch();

		if (!empty($params['startLat']) && $params['startLat'] <> "0" && !empty($params['endLat']) && $params['endLat'] <> "0" &&
			!empty($params['startLon']) && $params['startLon'] <> "0" && !empty($params['endLon']) && $params['endLon'] <> "0" )
		{
			// FROM句を取得
			$sql .= $this->_model_gpssearch->getFromForGpssearch();
			$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン

			// WHERE句を取得
			// GPSでの絞込み
			$sql .= $this->_model_gpssearch->getWhereForGpssearch($params, $db_params);
		}
		// エラー処理
		else
		{
			'GPS情報がありません';
			exit;
		}

		return $sql;
	}

	/* SQL作成（加盟店HP作成契約検索）
	 *
	 * @access	private
	 * @param   array
	 * @param	array ※参照渡し
	 * @return  string
	*/
	private function generateHpKeiyakuSearchSql($params, &$db_params)
	{
		if(!empty($params['keiyaku_cd']))
		{
			// インスタンス生成
			$this->_model_hpkeiyakusearch = new Rstobi_Model_HpkeiyakuSearch();

			if(empty($params['shubetsu']))
			{
				$params['shubetsu'] = 0;
			}

			// FROM句を取得
			$sql .= $this->_model_hpkeiyakusearch->getFromForHpKeiyakusearch($params);
			$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン

			// WHERE句を取得
			$sql .= $this->_model_hpkeiyakusearch->getWhereForHpKeiyakusearch($params, $db_params);
		}
		else
		{
			echo '契約CDがありません。';
			exit;
		}

		return $sql;
	}

	/* SQL作成（お気に入り物件一覧）
	 *
	 * @access	private
	 * @param   array
	 * @param	array ※参照渡し
	 * @return  string
	*/
	private function generateFavoriteSearchSql($params, &$db_params)
	{
		$sql = "";
		$uid = "";
		$heyaArr = array();
		if (empty($params['userId']))
		{
			//ログインしてない場合
			if($_COOKIE[Apm_Config_Rstdtl::NAME_COOKIE_OKINIIRI_CNT] <> "") {
				//Cookieから部屋コード取得
				$loader = new Zend_Application_Module_Autoloader(array(
					'namespace' => 'Rstdtl',
					'basePath' => APPLICATION_PATH . '/modules/rstdtl',
				));
				$model_dtlcookie = new Rstdtl_Model_Dtlcookie();
				$count = $_COOKIE[Apm_Config_Rstdtl::NAME_COOKIE_OKINIIRI_CNT];
				$heyaArr = $model_dtlcookie->getCookieAll(Apm_Config_Rstdtl::NAME_COOKIE_OKINIIRI, $count);
			}

			// FROM句を取得
			$sql .= ' From';
			$sql .= '     T03WEB_HEYA T03';
			$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン

			// WHERE句を取得
			$sql .= ' Where';
			$sql .= '     T03.T03_HEYA_CD in (';
			if (!empty($heyaArr)) {
				$inWhere = "";
				foreach ($heyaArr as $key => $val) {
					$inWhere .= ' :'.$key.' ,';
					$db_params[$key] = $val;
				}
				$sql .= substr($inWhere, 0, -1);	// 最後のカンマを削除
			}
			else {
				$sql .= " '' ";	// ダミーを設定
			}
			$sql .= ')';
		}
		else
		{
			//ログイン済みの場合
			// FROM句を取得
			$sql .= ' From';
			$sql .= '     T03WEB_HEYA T03';
			$sql .= '    ,T99FAVORITE T99';
			$sql .= $this->_model_rstobi_common->getCampFrom($params); //キャンペーン

			// WHERE句を取得
			$sql .= ' Where';
			$sql .= '     T03.T03_HEYA_CD = T99.T99_HEYA_CD ';
			$sql .= ' AND T99.T99_USER_CD = :userId ';
			$db_params['userId'] = $params['userId'];
		}

		return $sql;
	}

}
?>